package fulbitofacil.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

import fulbitofacil.exception.DAOExcepcion;
import fulbitofacil.modelo.Publicidad;
import fulbitofacil.modelo.Usuario;
import fulbitofacil.util.ConexionBD;

public class UsuarioDAO extends BaseDAO{

	public void insertar(Usuario u) throws DAOExcepcion {
		System.out.println("UsuarioDAO: insertar(Usuario u)");
		String query = "INSERT INTO Usuario(nombre, sexo, tip_Doc, correo, clave, fec_Naci, celular," +
				"rol, apellidos, numDoc) VALUES (?,?,?,?,?,?,?,?,?,?)";
		Connection con = null;
		PreparedStatement stmt = null;
		try {
			con = ConexionBD.obtenerConexion();
			stmt = con.prepareStatement(query);
			stmt.setString(1, u.getNombre());
			stmt.setInt(2, u.getSexo());
			stmt.setInt(3, u.getTipo_Doc());
			stmt.setString(4, u.getCorreo());
			stmt.setString(5, u.getClave());
			stmt.setString(6, u.getFec_Naci());
			stmt.setString(7, u.getCelular());
			stmt.setInt(8, u.getRol());
			stmt.setString(9, u.getApellidos());
			stmt.setString(10, u.getNumDoc());
			int i = stmt.executeUpdate(); //para insert,update,delete,create
			if (i != 1) {
				throw new SQLException("No se pudo insertar");
			}
		} catch (SQLException e) {
			System.err.println(e.getMessage());
			throw new DAOExcepcion(e.getMessage());
		} finally {
			this.cerrarStatement(stmt);
			this.cerrarConexion(con);
		}
	}
	
	public boolean retornarUsuario(String user,String pass) {
		// TODO Auto-generated method stub
		boolean b = false;
		Connection con = null;
		System.out.println("entro a retornar usuario");
		try {
			
			// creamos el statement
			con = ConexionBD.obtenerConexion();
			Statement st = con.createStatement();
			
			String sql = "SELECT * FROM usuario WHERE correo='" + user + "' and clave='"+pass+"'";
			ResultSet rs = st.executeQuery(sql);
			if (rs.next()) {	
				b = true;
			}
			
			//st.executeUpdate(sql);
			st.close();
			con.close();
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return b;
	}
	
	
	
	public int retornarRol(String user,String pass) {
		// TODO Auto-generated method stub
		int b = 0;
		Connection con = null;
		System.out.println("entro a retornar usuario");
		try {
			
			// creamos el statement
			con = ConexionBD.obtenerConexion();
			Statement st = con.createStatement();
			
			String sql = "SELECT * FROM usuario WHERE correo='" + user + "' and clave='"+pass+"'";
			ResultSet rs = st.executeQuery(sql);
			if (rs.next()) {	
				Usuario us = new Usuario();
				b= rs.getInt("rol");
			}
			
			//st.executeUpdate(sql);
			st.close();
			con.close();
			
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return b;
	}
	
	
	public boolean existeUsuario(String correo) {

		boolean b = false;
		Connection con = null;
		System.out.println("exiteUsuario()");
		try {
			con = ConexionBD.obtenerConexion();
			Statement st = con.createStatement();
			
			String sql = "SELECT * FROM usuario WHERE correo='" + correo + "'";
			ResultSet rs = st.executeQuery(sql);
			if (rs.first()) {	
				b = true;
			}

			st.close();
			con.close();
			
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return b;
	}
	
}
